//给你一个整数数组 nums ，其中总是存在 唯一的 一个最大整数 。 
//
// 请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是，则返回 最大元素的下标 ，否则返回 -1 。 
//
// 
//
// 示例 1： 
//
// 
//输入：nums = [3,6,1,0]
//输出：1
//解释：6 是最大的整数，对于数组中的其他整数，6 大于数组中其他元素的两倍。6 的下标是 1 ，所以返回 1 。
// 
//
// 示例 2： 
//
// 
//输入：nums = [1,2,3,4]
//输出：-1
//解释：4 没有超过 3 的两倍大，所以返回 -1 。 
//
// 示例 3： 
//
// 
//输入：nums = [1]
//输出：0
//解释：因为不存在其他数字，所以认为现有数字 1 至少是其他数字的两倍。
// 
//
// 
//
// 提示： 
//
// 
// 1 <= nums.length <= 50 
// 0 <= nums[i] <= 100 
// nums 中的最大元素是唯一的 
// 
// Related Topics 数组 排序 👍 134 👎 0

package com.cute.leetcode.editor.cn;
public class LargestNumberAtLeastTwiceOfOthers {
    public static void main(String[] args) {
        Solution solution = new LargestNumberAtLeastTwiceOfOthers().new Solution();
    }
    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        /**
         * 比较常规的一道题目，只需要找出最大值和第二大的值，然后最后进行比较即可
         */
        public int dominantIndex(int[] nums) {
            int max = Integer.MIN_VALUE;
            int second = Integer.MIN_VALUE;
            int index = -1;
            for (int i = 0; i < nums.length; i++) {
                if (nums[i]>max) {//最大值发生变化的时候，第二大的值也需要同样变化
                    second = max;
                    max = nums[i];
                    index = i;
                }else if (nums[i] > second) second = nums[i];
            }
            return max >= 2*second ? index : -1;
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}